package com.marvels.approve.process.service;


import java.util.List;

import com.github.pagehelper.Page;
import com.marvels.approve.common.dto.EstateInfoDTO;
import com.marvels.approve.common.dto.RiskCheckInfoDTO;
import com.marvels.approve.common.dto.TrickCheckInfoDTO;
import com.marvels.approve.loan.dto.McamLoanApplyInfoDTO;
import com.marvels.approve.manager.dto.OpinionTypeDTO;
import com.marvels.approve.process.dto.LoanApplyCaseDTO;
import com.marvels.approve.process.dto.SysUserDTO;
import com.marvels.common.dto.MarvelsResultDTO;
import com.marvels.common.exception.MarvelsBusinessException;

/**
 * 审批-任务处理
 * @author wangliang
 *
 */

public interface TaskProcessService {
	/**
	 * 获取贷款基本信息
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	McamLoanApplyInfoDTO getLoanInfo(String loanId)throws MarvelsBusinessException;
	
	/**
	 * 获取贷款详情
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	McamLoanApplyInfoDTO getLoanDetail(String loanId)throws MarvelsBusinessException;
	
	/**
	 * 远程调用进件子系统，获取基表数据
	 * @return
	 * @throws MarvelsBusinessException
	 */
	MarvelsResultDTO getBasicDatas()throws MarvelsBusinessException;
	
	
	
	
	/**
	 * 获取上传附件下拉框
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	MarvelsResultDTO getUploadAttamentTypes(String loanId)throws MarvelsBusinessException;
	
	
	/**
	 * 保存贷款信息
	 * @param loanInfo
	 * @return
	 * @throws MarvelsBusinessException
	 */
	McamLoanApplyInfoDTO saveLoanInfo(McamLoanApplyInfoDTO loanInfo)throws MarvelsBusinessException;
	
	/**
	 * 删除房产信息
	 * @param estateInfo
	 * @return
	 * @throws MarvelsBusinessException
	 */
	Integer deleteEstateInfo(EstateInfoDTO estateInfo)throws MarvelsBusinessException;
	
	/**
	 * 获取客户信息tab的下拉基表数据
	 * @return
	 * @throws MarvelsBusinessException
	 */
	MarvelsResultDTO getCustomerBasicDatas()throws MarvelsBusinessException;
	
	/**
	 * 获取客户详情
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	McamLoanApplyInfoDTO getCustomerDetail(String loanId)throws MarvelsBusinessException;
	
	/**
	 * 保存客户详情
	 * @param loanApplyInfo
	 * @return
	 * @throws MarvelsBusinessException
	 */
	McamLoanApplyInfoDTO saveCustomerInfo(McamLoanApplyInfoDTO loanApplyInfo)throws MarvelsBusinessException;
	
	/**
	 * 获取当前登录用户信息
	 * @return
	 * @throws MarvelsBusinessException
	 */
	SysUserDTO getLoginUserInfo()throws MarvelsBusinessException;
	
	/**
	 * 历史贷款记录分页查询
	 * @param loanInfo
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws MarvelsBusinessException
	 */
	Page<McamLoanApplyInfoDTO> getHistoryLoanInfoPage(McamLoanApplyInfoDTO loanInfo,Integer pageNo,Integer pageSize)throws MarvelsBusinessException;
	
	/**
	 * 欺诈检核结果分页查询
	 * @param loanInfo
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws MarvelsBusinessException
	 */
	Page<TrickCheckInfoDTO> getTrickCheckInfoPage(McamLoanApplyInfoDTO loanInfo,Integer pageNo,Integer pageSize)throws MarvelsBusinessException;
	
	/**
	 * 风险检核结果分页查询
	 * @param loanInfo
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws MarvelsBusinessException
	 */
	Page<RiskCheckInfoDTO> getRiskCheckInfoPage(McamLoanApplyInfoDTO loanInfo,Integer pageNo,Integer pageSize)throws MarvelsBusinessException;
	
	/**
	 * 刷新欺诈和风险检核结果数据
	 * @param loanId
	 * @throws MarvelsBusinessException
	 */
	void updateTrickAndRiskCheckData(String loanId)throws MarvelsBusinessException;
	
	/**
	 * 获取流转记录
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	LoanApplyCaseDTO getLoanApplyCaseLogs(String loanId)throws MarvelsBusinessException;
	
	/**
	 * 获取退回原因选项列表
	 * @return
	 * @throws MarvelsBusinessException
	 */
	List<OpinionTypeDTO> getReturnReasonList() throws MarvelsBusinessException;
}
